package com.cino.demos.controller.User;

import com.cino.demos.common.Result;
import com.cino.demos.entity.User;
import com.cino.demos.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private IUserService userService;

    @PostMapping("/save")
    public Result saveUser(@RequestBody User user){
        userService.saveUser(user);
        return Result.success();
    }


    @PostMapping("/update")
    public Result updateUser(@RequestBody User user){
        userService.updateUser(user);
        return Result.success();
    }

    /**
     * 测试自定义CREATE日志保存
     */
    @PostMapping("/saveWithCustomLog")
    public Result saveUserWithCustomLog(@RequestBody User user){
        boolean result = userService.saveUserWithCustomLog(user);
        return Result.success("用户保存成功，使用自定义CREATE日志保存，结果：" + result);
    }

    /**
     * 测试自定义UPDATE日志保存
     */
    @PostMapping("/updateWithCustomLog")
    public Result updateUserWithCustomLog(@RequestBody User user){
        boolean result = userService.updateUserWithCustomLog(user);
        return Result.success("用户更新成功，使用自定义UPDATE日志保存，结果：" + result);
    }

    /**
     * 测试通用自定义日志保存
     */
    @PostMapping("/saveWithGenericCustomLog")
    public Result saveUserWithGenericCustomLog(@RequestBody User user){
        boolean result = userService.saveUserWithGenericCustomLog(user);
        return Result.success("用户保存成功，使用通用自定义日志保存，结果：" + result);
    }

    /**
     * 测试外部系统日志保存
     */
    @PostMapping("/updateWithExternalLog")
    public Result updateUserWithExternalLog(@RequestBody User user){
        boolean result = userService.updateUserWithExternalLog(user);
        return Result.success("用户更新成功，使用外部系统日志保存，结果：" + result);
    }

    /**
     * 测试默认日志保存（对比用）
     */
    @PostMapping("/saveWithDefaultLog")
    public Result saveUserWithDefaultLog(@RequestBody User user){
        boolean result = userService.saveUser(user);
        return Result.success("用户保存成功，使用默认日志保存，结果：" + result);
    }

    /**
     * 测试默认UPDATE日志保存（对比用）
     */
    @PostMapping("/updateWithDefaultLog")
    public Result updateUserWithDefaultLog(@RequestBody User user){
        boolean result = userService.updateUser(user);
        return Result.success("用户更新成功，使用默认日志保存，结果：" + result);
    }

    /**
     * 测试DELETE操作 - 默认日志保存
     */
    @PostMapping("/deleteWithDefaultLog")
    public Result deleteUserWithDefaultLog(@RequestBody User user){
        boolean result = userService.deleteUser(user);
        return Result.success("用户删除成功，使用默认日志保存，结果：" + result);
    }

    /**
     * 测试DELETE操作 - 默认日志保存
     */
    @PostMapping("/deleteById")
    public Result deleteUserById(@RequestBody User user){
        boolean result = userService.deleteUserById(user.getId());
        return Result.success("用户删除成功，使用默认日志保存，结果：" + result);
    }

    /**
     * 测试DELETE操作 - 自定义日志保存
     */
    @PostMapping("/deleteWithCustomLog")
    public Result deleteUserWithCustomLog(@RequestBody User user){
        boolean result = userService.deleteUserWithCustomLog(user);
        return Result.success("用户删除成功，使用自定义日志保存，结果：" + result);
    }
}
